package com.bestcem.xm.user.grpc.service.converter;

import com.bestcem.bp.xm.user.grpc.v1.services.CreateSsoRequest;
import com.bestcem.bp.xm.user.grpc.v1.services.Sso;
import com.bestcem.xm.user.grpc.service.converter.strategy.UserEnumStrategy;
import com.bestcem.xm.user.service.dto.user.SsoDTO;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
 * 用户认证相关转换类
 *
 * @author wangyunyun <yunyun.wang@idiaoyan.com>
 * @version v1.0
 * @date 2022/6/29 15:30
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class AuthGrpcConverter {

    public static SsoDTO ssoReqGrpc2Dto(CreateSsoRequest request) {
        if ( request == null ) {
            return null;
        }

        SsoDTO ssoDTO = new SsoDTO();
        ssoDTO.setStatus( request.getStatusValue() );
        ssoDTO.setType( request.getType() );
        ssoDTO.setConfig( request.getConfig() );
        ssoDTO.setOrgId( request.getOrgId() );

        return ssoDTO;
    }

    public static Sso ssoDto2Grpc(SsoDTO ssoDTO) {
        if ( ssoDTO == null ) {
            return null;
        }

        Sso.Builder sso = Sso.newBuilder();

        if ( ssoDTO.getSsoId() != null ) {
            sso.setId( ssoDTO.getSsoId() );
        }
        if ( ssoDTO.getOrgId() != null ) {
            sso.setOrgId( ssoDTO.getOrgId() );
        }
        if ( ssoDTO.getType() != null ) {
            sso.setType( ssoDTO.getType() );
        }
        if ( ssoDTO.getStatus() != null ) {
            sso.setStatus( UserEnumStrategy.ssoStatusConveter( ssoDTO.getStatus() ) );
        }
        if ( ssoDTO.getConfig() != null ) {
            sso.setConfig( ssoDTO.getConfig() );
        }

        return sso.build();
    }
}
